#include "graph.h"
#include <bits/stdc++.h>
using namespace std;
const int N=204;
int n,m,g[N][N],c[N][N],d[N],fa[N],f[N][N],a[N][N],ans[N],vis[N][N];
void dfs1(int x){
    d[x]=NumberOfRoads();
    for(int i=1;i<=d[x];i++){
        if(i==fa[x]) continue;
        Move(i,2);
        c[x][i]=Color();
        int ff=LastRoad();
        if(c[x][i]==1){
            int y=(g[x][i]=++n);
            fa[y]=LastRoad();
            dfs1(g[x][i]);
        }
        if(c[x][i]==1) Move(ff,3);
        else Move(ff,Color());
    }
}
void dfs2(int x,int k){
    for(int i=1;i<=d[x];i++){
        if(i==fa[x]||c[x][i]==3) continue;
        Move(i,x/k%3+1);
        int ff=LastRoad();
        if(c[x][i]==1) dfs2(g[x][i],k);
        else g[x][i]+=(Color()-1)*k;
        Move(ff,Color());
    }
}
void Inspect(int R){
    dfs1(++n);
    for(int i=1;i<=n;i*=3) dfs2(1,i);
    memset(f,0x3f,sizeof(f));
    for(int i=1;i<=n;i++) f[i][i]=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=d[i];j++)
            if(g[i][j])
                f[i][g[i][j]]=f[g[i][j]][i]=1;
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            ans[f[i][j]]++;
    for(int i=1;i<=R;i++) Answer(i,ans[i]/2);
}